var name = "小明"
var age = 18
var flag = true

function hello() {
  console.log("hello word1")
}

//es6定义类的方式
class Stu {
  /*constructor构造函数中定义的属性可以称为实例属性（即定义在this对象上），
    constructor外声明的属性都是定义在原型上的，可以称为原型属性（即定义在class上)*/
  constructor(name, age) {
    this.name = name
    this.age = age
  }

  hello() {
    console.log("类你好 世界1")
  }
}

//如果要让其他的js文件使用本文件的变量、方法、对象等，必须通过export导出，其他文件通过import导入就能使用了

// --------------------------------------------------------------------------------------------------------
/**
 * 导出方式1（统一导出）
 */
export {
  name,
  age,
  flag,
  hello,
  Stu
}

// --------------------------------------------------------------------------------------------------------


/**
 * 导出方式2（分别导出）
 */
//导出变量
export var name1 = name

//导出方法
export function hello2() {
  console.log("你好 世界1")
}

//导出类
export class Stu1 {
  hello() {
    console.log("类你好 世界1")
  }
}


// --------------------------------------------------------------------------------------------------------


/**
 * 导出方式3 （默认导出，只能有一个）
 * 默认导出，默认导出只能存在一个，则其他文件早用的时候就可以不用指定具体名称来引用，一个文件中只能存在一个默认导出，
 * 否则其他文件不知道该找那个默认导出的数据
 */
// export default 10
/*
export default function () {
  console.log("默认导出")
}
*/
export default class {
  hello() {
    console.log("默认类你好 世界1")
  }
}